package solution;

import java.util.Arrays;

/**
 * <a href="https://www.nowcoder.com/practice/1097ca585245418ea2efd0e8b4d9eb7a?tpId=202&&tqId=38720&rp=1&ru=/activity/oj&qru=/ta/code-written-high/question-ranking">
 * WC11 出现一次的数字ii</a>
 *
 * @author or2
 * @Description 现在有一个整数类型的数组，数组中只有一个元素只出现一次，其余元素都出现三次。你需要找出只出现一次的元素
 * 注意：
 * 你需要给出一个线性时间复杂度的算法，你能在不使用额外内存空间的情况下解决这个问题么？
 * @create 2021年09月14日 时间: 22:32
 */
public class SingleNumber2 {
    /**
     * @param A int整型一维数组
     * @return int整型
     */
    public int singleNumber(int[] A) {
        if (A.length < 4)
            return A[0];
        Arrays.sort(A);
        for (int i = 0; i < A.length; i++) {
            if (A[i] == A[i + 1]) {
                i += 2;
                if (i == A.length - 2)
                    break;
                continue;
            }

            return A[i];
        }

        return A[A.length - 1];
    }
}
